题目描述

原题

Description:
Reverse digits of an integer.

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

Example1: x = 123, return 321
Example2: x = -123, return -321

原题翻译

描述:
给定一个 int 的整数,将其颠倒。

另外:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

例1:x = 123, 返回 321
例2:x = -123, 返回 -321

解法一

运行速度:超过了100%的解答。

内存使用:超过了11.66%的解答。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Solution {
public static int reverse(int x) {
if (x == 0)
return 0;

int result = 0;
while (x != 0) {
if (result > Integer.MAX_VALUE / 10 || result < Integer.MIN_VALUE / 10)
return 0;
result = result * 10 + x % 10;
x /= 10;
}
return result;
}
}

解法二

运行速度:超过了100%的解答。

内存使用:超过了5.55%的解答。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Solution {
public int reverse(int x) {
int res = 0;
int left = x;
while (left != 0){
int temp = res * 10 + left % 10;
if ((temp - left % 10) / 10 != res)
return 0;
left /= 10;
res = temp;
}
return res;
}
}